using System;
using System.Collections.Generic;
using ns26;
using ns27;

namespace Triton.Game.Mapping
{
	[Attribute38("Misdirection")]
	public class Misdirection : Spell
	{
		public enum TargetingMetadata
		{
			DestinationTarget,
			AttackingEntity,
			InitialTarget
		}

		public float m_ReticleFadeInTime => method_2<float>("m_ReticleFadeInTime");

		public float m_ReticleFadeOutTime => method_2<float>("m_ReticleFadeOutTime");

		public float m_ReticlePathTime => method_2<float>("m_ReticlePathTime");

		public float m_ReticleBlur => method_2<float>("m_ReticleBlur");

		public float m_ReticleBlurFocusTime => method_2<float>("m_ReticleBlurFocusTime");

		public Color m_ReticleAttackColor => method_2<Color>("m_ReticleAttackColor");

		public float m_ReticleAttackScale => method_2<float>("m_ReticleAttackScale");

		public float m_ReticleAttackTime => method_2<float>("m_ReticleAttackTime");

		public Vector3 m_ReticleAttackRotate => method_2<Vector3>("m_ReticleAttackRotate");

		public float m_ReticleAttackHold => method_2<float>("m_ReticleAttackHold");

		public GameObject m_Reticle => method_3<GameObject>("m_Reticle");

		public bool m_AllowTargetingInitialTarget => method_2<bool>("m_AllowTargetingInitialTarget");

		public int m_ReticlePathDesiredMinimumTargets => method_2<int>("m_ReticlePathDesiredMinimumTargets");

		public int m_ReticlePathDesiredMaximumTargets => method_2<int>("m_ReticlePathDesiredMaximumTargets");

		public GameObject m_ReticleInstance => method_3<GameObject>("m_ReticleInstance");

		public Card m_AttackingEntityCard => method_3<Card>("m_AttackingEntityCard");

		public Card m_InitialTargetCard => method_3<Card>("m_InitialTargetCard");

		public Color m_OrgAmbient => method_2<Color>("m_OrgAmbient");

		public Misdirection(IntPtr address, string className)
			: base(address, className)
		{
		}

		public Misdirection(IntPtr address)
			: this(address, "Misdirection")
		{
		}

		public new bool AddPowerTargets()
		{
			return method_11<bool>("AddPowerTargets", Array.Empty<object>());
		}

		public new void OnAction(SpellStateType prevStateType)
		{
			method_8("OnAction", prevStateType);
		}

		public void ResolveTargets()
		{
			method_8("ResolveTargets");
		}

		public void StartAnimation()
		{
			method_8("StartAnimation");
		}

		public void SetReticleAlphaValue(float val)
		{
			method_8("SetReticleAlphaValue", val);
		}

		public void ReticleAnimationComplete()
		{
			method_8("ReticleAnimationComplete");
		}

		public List<Vector3> BuildAnimationPath()
		{
			return method_14<Class250<Vector3>>("BuildAnimationPath", Array.Empty<object>())?.method_25();
		}

		public List<Card> FindPossibleTargetCards()
		{
			return method_14<Class251<Card>>("FindPossibleTargetCards", Array.Empty<object>())?.method_25();
		}

		public List<Card> GetOpponentZoneMinions()
		{
			return method_14<Class251<Card>>("GetOpponentZoneMinions", Array.Empty<object>())?.method_25();
		}

		public Card GetCurrentPlayerHeroCard()
		{
			return method_14<Card>("GetCurrentPlayerHeroCard", Array.Empty<object>());
		}

		public Card GetOpponentHeroCard()
		{
			return method_14<Card>("GetOpponentHeroCard", Array.Empty<object>());
		}
	}
}
